草庐IT

Java TLS-PSK 套接字

全部标签

sockets - 当服务器套接字接受客户端套接字时到底发生了什么?

我正在学习套接字编程,服务器套接字accept()让我很困惑。我写了两个serversocketaccept()的场景,大家看看:当服务器套接字执行accept()时,它会创建一个新的(客户端)套接字,该套接字绑定(bind)到与服务器套接字所在端口不同的端口边界。因此套接字通信是通过新绑定(bind)的端口完成的,服务器套接字(仅用于accept())正在等待原始绑定(bind)端口上的另一个客户端连接。我认为这不太正确,因为(1)端口与单个进程匹配,以及(2)套接字接受是进程内部的事情,单个进程可以有多个套接字。所以想到了第二种情况,基于一些stackoverflow的答案:当服务

c# - 当前实现异步套接字客户端的实践标准是什么?

我寻找满足以下要求的最佳实践:以异步方式处理多个客户端套接字的框架每个传入消息协议(protocol)规定每个消息都是格式字符串,并用换行符“\n”标记为完整。我可以完全控制客户端而不是服务器端。服务器接受并发送带有换行符的基于字符串的消息,以标记消息的完成。我希望能够在任何给定时间通过每个连接的套接字发送消息(每个套接字都可以接收和发送消息)。应通过回调转发传入消息。我希望能够在我的实现中选择是将来自所有已连接套接字的所有传入完整消息路由到一个单独的回调,还是每个套接字客户端实现其自己的回调。我最多连接4个客户端/套接字。因此,我寻找能够利用如此有限数量的套接字的建议,然而,能够同时

multithreading - TCP/IP套接字编程中同步传输和异步传输有什么区别?

我是C++的新手,我正在尝试开发基于boost::asio库的客户端-服务器应用程序。我(仍然)无法正确理解同步和异步模式之间的区别。我以前研究过HTTP和AJAX等Web协议(protocol)服务。来自thisexplanation,很明显HTTP是同步的,AJAX是异步的。TCP套接字通信在同步和异步方面有什么区别?从企业级多线程应用开发的角度来看,哪种模式更好,为什么?据我了解同步模式,客户端会阻塞一段时间,直到它从服务器接收到数据包/数据消息。并且在异步模式下,客户端在不阻塞当前操作的情况下执行另一个操作。为什么这是不同的?async是UDP的同义词吗?似乎并不关心它是否收到

sockets - node.js 的 "net"包中的 TCP socket.write 函数未写入套接字

我在使用node.js的net包将2条消息写入TCP套接字时遇到了一些问题。代码:varnet=require('net');varHOST='20.100.2.62';varPORT='5555';varsocket=newnet.Socket();socket.connect(PORT,HOST,function(){console.log('CONNECTEDTO:'+HOST+':'+PORT);//Writeamessagetothesocketassoonastheclientisconnected,theserverwillreceiveitasmessagefromth

C 套接字 : does send wait for recv to end?

我在Windows上使用阻塞式C套接字。我使用它们将数据更新从服务器发送到客户端,反之亦然。我以高频率(每100毫秒)发送更新。send()函数是否会等待接收方recv()接收到数据才结束?如果我很好地理解手册页,我假设不会:"Successfulcompletionofsend()doesnotguaranteedeliveryofthemessage."那么如果一个正在运行10次send()而另一个只完成1次recv()会发生什么?我需要使用某种确认系统吗? 最佳答案 让我们假设您正在使用TCP。当您调用发送时,您正在发送的数据

java - Windows Server 2012 上的 [SYN] 上的 TCP 套接字 accept() 返回

我使用每10秒发送一次健康检查的HAProxy。它按照以下方式进行:HAProxy->server:[SYN]server->HAProxy:[SYN,ACK]HAProxy->server:[RST,ACK]我的TCP服务器是用java编写的,方式如下:while(true){Socketsocket=kaServerSocket.accept();MyListenerlistener=newMyListener(socket);listener.start();//costlyoperation}在Windows7上,accept()不会在此交换后返回(它会在常规syn->ack-

java - 在 Java 中,如何从已打开的 C 套接字的文件描述符中获取 Socket 或 DatagramSocket?

我有一个分为两部分的Linux程序。一部分进行NAT遍历以获得UDP套接字(UDP打洞)或TCP套接字(TCP打洞)。第一部分是用C编写的,以允许促进或增强NAT遍历过程的native功能。第二部分实际使用的是通过第一部分执行的NAT穿越获得的已连接套接字。问题来了。我希望第一部分(获取套接字的部分)独立于第二部分(将套接字用于特定应用目的的部分)。例如,我希望第一部分可重复用于各种不同的应用程序,这些应用程序都需要在对等点之间建立UDP和TCP连接。现在,我希望第二部分(应用程序部分)用Java而不是C或C++编写。我希望第二部分使用由负责NAT遍历的C代码获得的套接字连接。假设第一

java - 为什么 DefaultHttpClient 通过半关闭套接字发送数据?

我在Android(2.3.x)上使用DefaultHttpClient和ThreadSafeClientConnManager将HTTP请求发送到我的REST服务器(嵌入式Jetty)。在约200秒的空闲时间后,服务器使用[FIN]关闭TCP连接。Android客户端以[ACK]响应。这应该并且确实使套接字处于半关闭状态(服务器仍在监听,但无法发送数据)。我希望当客户端再次尝试使用该连接时(通过HttpClient.execute),DefaultHttpClient会检测到半关闭状态,关闭套接字客户端(因此发送它的[FIN/ACK]来完成关闭),并为请求打开一个新连接。但是,有问题

tcp - 使用 Unix 域套接字与 TCP 套接字建立连接的成本是多少?

奇怪的是我没有通过谷歌搜索找到这个信息。使用Unix域套接字与TCP套接字建立连接的成本是多少?现在我必须使用TCP套接字进行连接池,因为重新连接非常昂贵。我想知道我是否可以通过简单地切换到Unix域套接字并摆脱连接池来简化我的客户端。 最佳答案 如果您查看代码,您会发现Unix域套接字执行的代码远少于TCP套接字。通过TCP套接字发送的消息必须一直通过网络堆栈到达环回接口(interface)(这是一个虚拟网络接口(interface)设备,在Unix风格的系统上通常称为“lo”),然后返回到接收套接字.网络堆栈代码附加在TCP和

java - 使用 TCP KeepAlive 检测套接字断开连接

我正在开发一个通过TCP/IP托管第3方设备的服务器,并且一直在经历突然的连接断开(设备通过蜂窝连接)。我需要找到一种方法来检测断开连接,而无需将数据写入设备本身。我研究过使用TCP保活功能,但Java似乎不允许对保活操作的时间进行任何调整。有什么推荐的方法吗?我的简化套接字代码如下:publicclassTest2Socket{publicstaticvoidmain(String[]args){try{ServerSocketskt=newServerSocket(1111);SocketclientSocket=skt.accept();clientSocket.setKeepA